Fast algorithm for anisotropic texture sampling

ABSTRACT

A faster algorithm for computing the texture of a pixel is disclosed. A major and minor direction in texel space are determined. Steps in the major direction are set to unity and steps in the minor direction are set to the slope of the anistropy line of the footprint. The end points of the anistropy line in the major direction are then positioned to be on grid in the texture space. The texture is computed for each sample along the anistropy line by computing an interpolation cooefficient for the sample, linearly interpolating two texels based on the cooefficient, weighting the interpolated sample, and accumulating the weighted samples. The result is the texture value to be used for the pixel.

FIELD OF THE INVENTION

This invention relates generally to texture mapping in a computergraphics application and more particularly to a system and method forcomputing texels in texture space.

DESCRIPTION OF THE RELATED ART

FIG. 1A shows a typical computer system with a graphics displayprocessor and a frame buffer. In particular, a system bus 10 is used toconnect the CPU 12, the display or graphics processor 14, the systemmemory 16 and any I/O subsystems needed 18. The display processor isalso connected to the display processor memory 20 and the frame buffer22. A video controller 24 is used to display the contents of the framebuffer 22 on the monitor 26. The display processor typically receivesinstructions from display processor memory and executes them to build animage in the frame buffer. Texture information may be stored in thesystem memory 16 or the display processor memory 20.

Texture mapping is the mapping of a function onto a surface inthree-dimensional object space. The domain of the texture function canbe a one, two, or three-dimensional array. Most commonly it is atwo-dimensional space with coordinates (u, v). In particular,I:T→S_(3D), where I is the function that applies a 2D texture in texturespace T to a surface S in 3D space, as shown in FIG. 1B. After thetexture is applied to the surface, a transformation, usually aperspective transformation, is used to map the surface to the 2D screenspace, i.e., P:S_(3D) ^(T)→D_(2D), where P is the transformation thatapplies the view frustum to the 3D space with coordinates (x₀, y₀, z₀)to find the visible portion in 2D screen space with coordinates (x, y),as shown in FIG. 1B. Usually, this mapping is viewed as a compositemapping I∘P, i.e., one from the texture space to the screen space. Ifthis composite mapping is invertible, i.e., (I∘P)⁻¹ is possible, thecomposite mapping lends itself to screen order scanning where, for eachpixel in screen space, the footprint area of the pixel in texture spaceis found and this area is filtered to obtain the applicable texturing.The footprint area of a pixel may be described approximately by a(possibly curvilinear) quadrilateral having a length and a width withthe center of a pixel in the center of the quadrilateral. Some form offiltering is used to find the texture value of the pixel based on theshape of the quadrilateral. Often the shape of the footprint issimplified to be a planar quadrilateral or a parallelogram.

Often a texture map has too much detail for the pixel to be displayed.This occurs if the pixel is part of a small object that is distant fromthe viewing point. To reduce the detail of the texture map, a processcalled mipmapping is used. Instead of having one extremely detailedtexture map, a pyramid of prefiltered texture maps is formed. Texturemaps at the bottom of the pyramid are more detailed and texture maps atthe top of the pyramid are bilinear filtered texture maps from bottomlevels. The position in the pyramid is called the level of detail (LOD),which can indicate one of the levels in the pyramid or a pair of levelsto be used if interpolation of the pair of levels is permitted. Properuse of mipmapping can help avoid aliasing and bluring of the image.

Traditional anisotropic filtering uses a simplified and approximatemodel of the pixel's projection (footprint) to the texture space toachieve good performance with visually acceptable results.

It uses six parameters:

r—ratio, the length of the pixel's footprint in the texture space at thegiven LOD level;

LOD—current MIP level and d-fraction for blending between MIP-levels;

du—the slope of the major axis of the footprint along the u-axis;

dv—the slope of the major axis of the footprint along the v-axis;

u₀—the u-coordinate of the position of the center of the pixel'sfootprint;

v₀—the v-coordinate of the position of the center of the pixel'sfootprint;

Now referring to FIG. 2A, along the line specified by u₀, v₀, du and dv,anisotropic filtering takes ceil(r) bi-linear samples 100, 102, 104,106, 108, 110, 112, distributed evenly with center in (u₀, v₀) 114. Ifthe r>1, anisotropic filtering becomes extensive and takes a lot ofcomputational power.

At the first stage of filtering, the anisotropic filtering fetchesbi-linear samples along the center line. The distance between each twosamples is 1, which means that the texels, used for the samples, arefrequently used twice. Also, using a lot of bi-linear samples takesextensive computation. There is a need for a system of computing texelswhich is less computationally intensive, yet still preserves the qualityof the textured image.

BRIEF SUMMARY OF THE INVENTION

The present invention is directed towards such a need. The presentinvention avoids sampling texels more than once and has betterperformance with little loss in quality compared to the traditionaltechnique.

A method in accordance with the present invention is a method ofrendering a pixel with texture values. The method includes establishingsample points of a footprint of a pixel in a planar texture space, wherethe texture space has a grid derived from discrete points on a firstaxis and a second axis orthogonal to the first axis and the first axisis the axis along which a change in texture is greater than that alongthe second axis, linearly interpolating two texel values at each samplepoint on the first axis, where the texel values are derived from a pairof adjacent grid points on the second axis, by weighting a sum of thetwo texel values based on the position of the sample point between theadjacent grid points of the second axis, and assigning a weight to eachof the interpolated texel values and accumulating the weighted texelvalues to arrive at a final texture value for the pixel. The pixel isthen rendered with the final texture value.

Another method in accordance with the present invention includes mappinga pixel to be displayed to a texture space to form a footprint of thepixel in said space, where the footprint defines an anisotropy linehaving a pair of actual end points, determining a major direction and aminor direction of the footprint in said space, where the major andminor direction being axes in said texture space, setting a step size inthe major direction to unity and a step size in the minor direction tothe slope of the anisotropy line, positioning the actual end points ofthe anisotropy line to be on grid in said texture space, where the stepsize defines a number of samples including the positioned end pointsalong the anisotropy line, and where each sample is to be assigned aweight, and computing a normalized weight for each of the positioned endpoints. The method further includes, for each of the samples includingthe positioned end points on the anisotropy line in texture space, thesteps of computing an interpolation coefficient, obtaining first andsecond texel values to be interpolated, linearly interpolating the firstand second texel values to create an interpolated texel value, computinga normalized weight of the sample if the sample is not one of thepositioned end points, and accumulating weighted interpolated texels.The pixel with the accumulated texture value is then rendered with thattexture value.

One advantage of the present invention is that there are fewer samplesfor which an interpolated texture is computed. This results from the useof unit steps when the major axis of the pixel's footprint is projectedonto the u or v axis.

Another advantage is that the present invention uses fewer computationalresources to find the final value of a texture for a given pixel becauseof the use of linear interpolation. Also saves memory bandwidth (lessnumber of samples to be fetched)

Yet another advantage of the present invention is that the image qualityis good because the present invention avoids aliasing by using asufficient number of sample points.

Yet another advantage of the present invention is that it operates at agiven level of detail to avoid computing textures that are not neededfor the current view of a user.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features, aspects and advantages of the presentinvention will become better understood with regard to the followingdescription, appended claims, and accompanying drawings where:

FIG. 1A shows a typical computer system with a graphics displayprocessor and a frame buffer;

FIG. 1B shows the general mapping involved in applying textures to animage;

FIG. 2A shows a footprint of a pixel in the texture space with theconventional sample points marked on the sample line;

FIG. 2B shows the coordinates and sample points of the presentinvention; and

FIGS. 3A–3G show a flow chart of an algorithm in accordance with anembodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 2B illustrates the way the samples for anisotropic filtering aretaken for an algorithm in accordance with an embodiment of the presentinvention. Here is the sequence of actions to be taken in theimplementation of the latter:

Having du and dv, the major direction corresponds to the direction withthe larger gradient. The step in the major direction is 1, as thealgorithm takes linear, not bi-linear, samples; therefore, one of thecoordinates should always be an integer and the step in the minordirection should be corrected correspondingly. For what follows, it isassumed that du>dv, as illustrated in FIG. 2B. The opposite case isdiscussed below.

$\begin{matrix}{{d_{u} = 1},{d_{v} = \frac{\mathbb{d}v}{\mathbb{d}u}}} & (1)\end{matrix}$

The anisotropy line should be projected to the axis of the majordirection, and the enpoints, extended to the integer grid, must befound. This is done by the following computations.

$\begin{matrix}{u_{1} = {{{{floor}\left( {u_{0} - {r{{du}}}} \right)}\mspace{14mu} v_{l}} = {v_{0} + {\left( {u_{l} - u_{0}} \right)\frac{\mathbb{d}v}{\mathbb{d}u}}}}} & (2) \\{u_{h} = {{{{ceiling}\left( {u_{0} + {r{{du}}}} \right)}\mspace{14mu} v_{h}} = {v_{0} + {\left( {u_{h} - u_{0}} \right)\frac{\mathbb{d}v}{\mathbb{d}u}}}}} & (3)\end{matrix}$

Equation (2) determines the integer closest to the lower end point forthe u-coordinaate and the v-coordinate from dv and the u-coordinate. Useof the floor function has the effect of possibly extending the lower endpoint. Equation (3) determines the integer closest to the upper endpoint for the u-coordinate and the v-coordinate from dv and theu-coordinate. Use of the ceiling function has the effect of possiblyextending the upper end point. (The function floor(x) is defined as thelargest integer less than or equal to x and the function ceiling(x) isthe smallest integer no less than x.)

All the samples other than the end points have equal weight, 1/W. Theend points have weights according to their distance from the ends of theoriginal center line.w _(l)=1−q  (4)w _(h)=1+q  (5)

Equation (4) gives the weight for the lower end point, whereq=(u₀−r|du|)−u_(l), i.e., the difference between the actual u-coordinateof the lower end point and the extended u-coordinate. If q is large,then w_(l) is smaller, giving less weight to an actual end point that isfar from the extended end point and giving more weight to w_(h), theweight of the upper end point.k=u _(h) −u _(l)  (6)

The parameter k in Equation (6) gives the number of unit steps betweenthe highest u-coordinate and lowest u-coordinate of the footprint.

Equation (7) gives the normalized weight of each of the samples, eachhaving an equal weight, where W=1+k is the normalizing parameter used toassure that the weights add up to unity.

$\begin{matrix}{w_{i} = \frac{1}{W}} & (7) \\{{w_{0} = \frac{w_{l}}{W}},{w_{k} = \frac{w_{h}}{W}}} & (8)\end{matrix}$Equation (8) gives the normalized weights for the end points.

In Equation (9), the sample coordinates are calculated iterativelystarting from one of the end points as follows.

$\begin{matrix}{{{c_{i} = {c_{i - 1} + \left( {1,\frac{\mathbb{d}v}{\mathbb{d}u}} \right)}},{i = {1\mspace{11mu}\ldots\mspace{11mu} k}},{where}}{{c_{0} = \left( {u_{l},v_{l}} \right)},{c_{i,0} = u_{i}}}{c_{i,1} = {v_{i}.}}} & (9)\end{matrix}$

The linearly interpolated textures for each of the sample coordinatesare next computed. For each of the sample coordinates, i.e., for i=0. .. k, the following calculations are performed.{tilde over (c)} _(i)=floor(c _(i,1))  (10)α_(i) =c _(i,1) −{tilde over (c)} _(i)  (11)s _(i,0) =t(c _(i,0,) {tilde over (c)} _(i))  (12)s _(i,1) =t(c _(i,0,) {tilde over (c)} _(i)+1)  (13)S _(i)=(1−α)s _(i,0) +αs _(i,1)  (14)

In Equation (10), the floor of the v-coordinate of the sample is found.Next, in Equation (11), the difference between the floor and thev-coordinate is calculated to give the interpolation parameter, α. InEquation (12), the texture for the u-coordinate and the floor of thev-coordinate is found. In Equation (13), the texture for theu-coordinate and the floor +1 of the v-coordinate is found. In Equation(14), the linear interpolation occurs using the interpolation parameter,α. Thus, for each sample point along the sample line an interpolatedtexture value S_(i) is obtained. The final texture value to be used forthe pixel is computed as the weighted sum of the linearly interpolatedtexture values S_(i), one for each sample:

$\begin{matrix}{a = {{\sum\limits_{i = 0}^{k}{S_{i}w_{i}}} = {{S_{0}w_{0}} + {\sum\limits_{i = 1}^{k - 1}{S_{i}w_{i}}} + {S_{k}w_{k}}}}} & (15)\end{matrix}$Below are the equations for the opposite case, i.e., when dv≧du.

$\begin{matrix}{{d_{u} = \frac{\mathbb{d}u}{\mathbb{d}v}},{d_{v} = 1}} & (16)\end{matrix}$Equation (16) sets the step of the major axis, now v, to unity.

$\begin{matrix}{{u_{l} = {u_{0} + {\left( {v_{l} - v_{0}} \right)\frac{\mathbb{d}u}{\mathbb{d}v}}}},{v_{l} = {{floor}\left( {v_{0} - {r{{du}}}} \right)}}} & (17)\end{matrix}$Equation (17) computes the lower end point coordinates, possiblyextending the v-coordinate.

$\begin{matrix}{{u_{h} = {u_{0} + {\left( {v_{h} - v_{0}} \right)\frac{\mathbb{d}u}{\mathbb{d}v}}}},{v_{h} = {{ceiling}\left( {v_{0} + {r{{du}}}} \right)}}} & (18)\end{matrix}$Equation (18) computes the upper end points, possibly extending thev-coordinate.w _(l)=1−p, where p=(v ₀ −r|du|)−v _(l)  (19)w _(h)=1+p  (20)Equation (19) computes the weight of the lower end point coordinates andequation (20) computes the weight of the upper end point coordinates.Each of these end points is a sample.k=v _(h) −v _(l)  (21)Equation (21) computes the number of steps based on the majorcoordinate.

$\begin{matrix}{{W = {1 + k}};} & (22) \\{{w_{0} = \frac{w_{l}}{W}},{w_{k} = \frac{w_{h}}{W}}} & (23)\end{matrix}$Equations (22) compute the normalizing weight and equation (23) computesthe normalized weight of the end point samples.

$\begin{matrix}{{c_{i} = {c_{i - 1} + \left( {\frac{\mathbb{d}u}{\mathbb{d}v},1} \right)}},{i = {1\mspace{11mu}\ldots\mspace{11mu} k}}} & (24)\end{matrix}$Equation 24 computes the next sample based on the previous sample. Themajor axis coordinate, v in this case, is obtained by a unit step, andthe minor axis coordinate is obtained by adding the slope to theprevious sample minor axis coordinate.c ₀=(u _(l) ,v _(l))  (25)c _(i,0) =u _(i) , c _(i,1) =v _(i)  (26)Equation (25) gives the starting sample, which is one of the end points.{tilde over (c)} _(i)=floor(c _(i,0))  (27)Equation (27) computes the minor axis coordinate of the current sampleat the largest grid intersection less than the actual minor axiscoordinate.α_(i) =c _(i,0) −{tilde over (c)} _(i)  (28)Equation (28) computes the difference between the floor of the minoraxis coordinate and the actual coordinate as the interpolationcooeficient. This gives an indication of how close the actual coordinateis to the nearest grid intersection. The smaller the difference thesmaller the interpolation coefficient.s _(i,0) =t(c _(i,1) ,{tilde over (c)} _(i))  (29)s _(i,1) =t(c _(i,1) ,{tilde over (c)} _(i)+1)  (30)Equations (29) and (30) fetch the texels for the minor axis coordinatesat the floor and the floor +1 positions for the major axis position ofthe sample.S _(i)=(1−α)s _(i,0) +αs _(i,1)  (31)Equation (31) linearly interpolates the fetched texels. A texel for asample closer to a minor axis grid coordinate is weighted more heavily.

$\begin{matrix}{w_{i} = \frac{1}{W}} & (32)\end{matrix}$Equation (32) computes the weight of a sample that is not one of the endpoints (whose weights were already calculated).

$\begin{matrix}{a = {{\sum\limits_{i = 0}^{k}\;{S_{i}w_{i}}} = {{S_{0}w_{0}} + {\sum\limits_{i = 1}^{k - 1}\;{S_{i}w_{i}}} + {S_{k}w_{k}}}}} & (33)\end{matrix}$Equation (33) accumulates the sample-weight products. After all of thesamples have been textured, a provides a final texture for the pixel.

FIGS. 3A–3G show a flow chart in accordance with embodiment of thepresent invention. In FIG. 3A, steps 400–408 in preparation of a loop onthe samples precede the loop. In step 400, the direction of the largergradient in u,v space is determined and this is designated the majordirection. The step in the major direction is set, in step 402, to unityand the step in the minor direction is set to the slope of theanisotropy line in the u,v space. In step 404, the end points of theanistropy line are positioned to be on grid in the texture space and, instep 406, the normalized weights of the end points are found. In step408, an accumulator for storing the final texture value is initialized.

In the loop, step 410 selects the sample along the anistropy linestarting at one of the end points. Next, in step 412, the interpolationcoefficient for the sample is computed. In step 414, the two texels tobe interpolated for the sample are obtained and, in step 416, they areinterpolated using the interpolation coefficient. Next, in step 418, ifthe sample is not an end point, the normalized weight for the sample isfound and, in step 420, the weighted interpolated texels areaccumulated. The loop continues until there are no more samples toconsider. When the loop ends, the accumulator contains the final valueof the texture for the pixel in question.

FIG. 3B shows the steps, in one embodiment, for calculating the endpoints of the anistropy line. In step 440, the nearest major axis gridline based on the length of the anisotropy line is selected as the lowercoordinate in the major direction. In step 442, the lower coordinate inthe minor direction is computed based on the selected lower coordinatein the major direction and the slope of the anistropy line. In step 444,the nearest major axis grid line based on the length of the anistropyline is selected as the upper coordinate in the major direction. In step446, the upper coordinate in the minor direction is computed based onthe selected upper coordinate in the major direction and the slope ofthe anistropy line.

FIG. 3C shows the steps, in one embodiment, for calculating thenormalized weights of the end points. First, the difference between theactual coordinate of the lower end point in the major direction and thepositioned coordinate of the lower end point is computed, in step 450.Then in step 452, the difference is added to unity to compute the weightof the upper positioned end point. In step 454, the difference issubtraced from unity to compute the weight of the lower positioned endpoint. In step 456, the number of steps along the anistropy line withthe positioned end points is determined and the number is added to unityto obtain the normalizing value. In step 458, the weight of the upperend point and the weight of the lower end point are each dividided bythe normalizing value.

FIG. 3D shows the steps, in one embodiment, for computing theinterpolation cooefficient for the sample. First in step 462, the minoraxis coordinate of the sample is positioned to be on grid and in step464, the difference between the sample's minor axis coordinate and thepositioned coordinate computed to obtain the interpolation cooefficient.

FIG. 3E shows the steps, in one embodiment, for obtaining the two texelsto be interpolated for the sample. In step 470, the first texel isfetched using the major axis coordinate and the positioned minor axiscoordinate of the sample. In step 472, the second texel is fetched usingthe major axis coordinate and the positioned minor axis coordinate +1.

FIG. 3F shows the steps, in one embodiment, for interpolating the texelsbased on the interpolation coefficient. In step 480, the product of thefirst texel and (1−the interpolation cooefficient) is formed and, instep 482, the product of the second texel and the interpolationcooeficient is formed. In step 484, the sum of the two products iscomputed to find the interpolated texel.

FIG. 3G shows the steps, in one embodiment, for accumulating weightedinterpolated texels. In step 490, the product of the sample weight andthe interpolated texel is formed and in step 492, the product is addedto the contents of the accumulator.

Although the present invention has been described in considerable detailwith reference to certain preferred versions thereof, other versions arepossible. Therefore, the spirit and scope of the appended claims shouldnot be limited to the description of the preferred versions containedherein.

1. A method of rendering a pixel with texture values, the methodcomprising: establishing sample points of a footprint of a pixel in aplanar texture space, the texture space having a grid derived fromdiscrete points on a first axis and a second axis orthogonal to thefirst axis, the first axis being the axis along which a change intexture is greater than that along the second axis; linearlyinterpolating two texel values at each sample point on the first axis,the texel values derived from a pair of adjacent grid points on thesecond axis, by weighting a sum of the two texel values based on theposition of the sample point between the adjacent grid points of thesecond axis; assigning a weight to each of the interpolated texel valuesand accumulating the weighted texel values to arrive at a final texturevalue for the pixel; and rendering the pixel with the final texturevalue.
 2. A method of rendering a pixel with texture values, as recitedin claim 1, wherein, in the interpolated texel, a texel value having asample point closer to a grid point of the second axis is given moreweight than a texel value having a sample point farther from a gridpoint.
 3. A method of rendering a pixel with texture values, as recitedin claim 1, wherein establishing sample points of a footprint includesextending the footprint so that ends of the footprint are on the grid ofthe first axis; and wherein the weight of an interpolated pixel isadjusted to account for the extended footprint.
 4. A method of renderinga pixel with texture values, as recited in claim 1, wherein an end ofthe footprint closer to a grid point on the first axis is given moreweight than an end farther from a grid point.
 5. A method of rendering apixel with texture values, the method comprising: mapping a pixel to bedisplayed to a texture space to form a footprint of the pixel in saidspace, the footprint defining an anisotropy line having a pair of actualend points; determining a major direction and a minor direction of thefootprint in said space, the major and minor direction being axes insaid texture space; setting a step size in the major direction to unityand a step size in the minor direction to the slope of the anisotropyline; positioning the actual end points of the anisotropy line to be ongrid in said texture space, wherein the step size defines a number ofsamples including the positioned end points along the anisotropy line,each sample to be assigned a weight; computing a normalized weight foreach of the positioned end points; for each of the samples, includingthe positioned end points, on the anisotropy line in the texture space,computing an interpolation coefficient, obtaining first and second texelvalues to be interpolated, linearly interpolating the first and secondtexel values to create an interpolated texel value, computing anormalized weight of the sample if the sample is not one of thepositioned end points, and accumulating weighted interpolated texels;and rendering the pixel with the accumulated texture value.
 6. A methodof rendering a pixel with texture values as recited in claim 5, whereineach end point has an upper and lower coordinates in the major and minordirections; and wherein positioning the actual end points includes:computing the lower coordinates in the major and minor directions; andcomputing the upper coordinates in the major and minor directions.
 7. Amethod of rendering a pixel with texture values as recited in claim 6,wherein computing the lower coordinates in the major and minordirections includes: selecting the nearest major axis grid line based onthe length of the anisotropy line as the lower coordinate in the majordirection; and computing the lower coordinate in the minor directionbased on the selected lower coordinate in the major direction and theslope of the anisotropy line.
 8. A method of rendering a pixel withtexture values as recited in claim 7, wherein the pixel to be renderedhas center coordinates on the anisotropy line; and wherein selecting thenearest major axis grid line based on the length of the anisotropy lineas the lower coordinate in the major direction includes: computing thedifference between the center coordinate in the major direction andlength of the anisotropy line; and computing the floor of thedifference.
 9. A method of rendering a pixel with texture values asrecited in claim 6, wherein computing the upper coordinates in the majorand minor directions includes: selecting the nearest major axis gridline based on the length of the anisotropy line as the upper coordinatein the major direction; and computing the upper coordinate in the minordirection based on the selected upper coordinate in the major directionand the slope of the anisotropy line.
 10. A method of rendering a pixelwith texture values as recited in claim 9, wherein the pixel to berendered has center coordinates on the anisotropy line; and whereinselecting the nearest major axis grid line based on the length of theanisotropy line as the upper coordinate in the major direction includes:computing the sum of the center coordinate in the major direction andlength of the anisotropy line; and computing the ceiling of the sum. 11.A method of rendering a pixel with texture values as recited in claim 5,wherein computing the normalized weights of the positioned end pointsincludes: computing the difference between the actual coordinate of thelower end point in the major direction and the positioned coordinate ofthe lower end point; adding the difference to unity to compute theweight of the upper positioned end point; subtracting the differencefrom unity to compute the weight of the lower positioned end point;determining the number of steps along the anisotropy line with thepositioned end points and adding the number to unity to find anormalizing value; and dividing the weight of the upper end point andthe weight of the lower end point by the normalizing value.
 12. A methodof rendering a pixel with texture values as recited in claim 5, whereincomputing an interpolation coefficient includes: positioning the minoraxis coordinate of the sample to be on grid; and computing a differencebetween the sample's minor axis coordinate and the positioned coordinateto obtain the interpolation coefficient.
 13. A method of rendering apixel with texture values as recited in claim 12, wherein obtainingfirst and second texel values to be interpolated includes: fetching thefirst texel at the major axis coordinate of the sample and thepositioned minor axis coordinate; and fetching the second texel at themajor axis coordinate of the sample and the positioned minor axiscoordinate plus unity.
 14. A method of rendering a pixel with texturevalues as recited in claim 13, wherein linearly interpolating the firstand second texel values to create an interpolated texel value includes:computing a product of the first texel and (1−the interpolationcoefficient); computing a product of the second texel and theinterpolation coefficient; and computing a sum of the two products tofind the interpolated texel.
 15. A method of rendering a pixel withtexture values as recited in claim 14, wherein accumulating weightedinterpolated texels includes: computing a product of the sample weightand the interpolated texel; and adding the product to the accumulator.